<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //push添加一个元素到栈顶
        // pop出栈
        //peek返回栈顶


        // isEmpty()
        // clear()
        // size()
        // tostring()
        class Stack {
            #items = [];
            // pop出栈
            pop() {
                return this.#items.pop();
            }
            //push添加一个元素到栈顶
            push(data) {
                this.#items.push(data);
            }
            // peek返回栈顶元素
            peek() {
                // return this.#items[this.#items.length - 1];
                return this.#items.at(-1);
            }
            // 栈的大小
            size() {
                return this.#items.length;
            }
            // 判断栈是否为空
            isEmpty() {
                return this.#items.length === 0 ? true : false;
            }

            // 清空栈
            clear() {
                this.#items = [];
            }

            // 转换为字符串
            toString() {
                return this.#items.join(',');
            }
        }

        let stack = new Stack();
        // 十进制转二进制
        // base进制转二进制
        function covert(decNumber, base) {
            // 创建栈实例
            let remStack = new Stack();
            // 保存传入的十进制数字
            let number = decNumber;
            // 用于存放字符串
            let string = '';
            let baseString = '0123456789ABCDEF';
            while (number > 0) {
                // 将余数压入栈中
                remStack.push(number % base);
                // 将商保存下来 以供下次循环使用
                number = Math.floor(number / base);
            }


            while (!(remStack.isEmpty())) {
                // // 拿出栈中元素 并赋值给string变量
                // string += remStack.pop();
                // 拿出栈中元素 并赋值给string变量
                // 通过取出的元素作为索引 来确定对应的字符串
                string += baseString[remStack.pop()];
            }
            // 返回转换后的结果
            return string;
        }
        console.log(covert(123, 16));


    </script>
</body>

</html>